package com.smfx.yxt.service;

import java.util.List;

import com.smfx.yxt.common.RspResult;
import com.smfx.yxt.model.CourseClassDate;
import com.smfx.yxt.model.KccsCourseInfo;
import com.smfx.yxt.page.Page;
import com.smfx.yxt.reqVo.BaseQueryVO;
import com.smfx.yxt.reqVo.KccsCourseQueryVO;
import com.smfx.yxt.reqVo.KccsCourseReqVO;
import com.smfx.yxt.reqVo.KccsStudentSignReqVO;
import com.smfx.yxt.view.KccsCourseStudentSignTotal;
import com.smfx.yxt.view.KccsCourseStudentSignView;
import com.smfx.yxt.view.KccsCourseView;

public interface IKccsCourseInfoService {

	int insertSelective(KccsCourseInfo record);

    KccsCourseInfo selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(KccsCourseInfo record);
    
    int updateBatchCourseStatus(List<String> list, Integer isAgree, Integer updaterId, String updater);

    KccsCourseView selectViewById(Integer courseId);
    
    void addAndUpdate(KccsCourseReqVO vo);
    
    List<KccsCourseStudentSignView> selectSignedListForClass(KccsCourseQueryVO vo);
    
    List<KccsCourseStudentSignView> selectNoSignListForClass(KccsCourseQueryVO vo);
    
    KccsCourseStudentSignView selectSignedCourseForStudent(KccsCourseQueryVO vo);
    
    RspResult insertSign(KccsStudentSignReqVO reqVO);
    
    RspResult updateChangeSign(KccsStudentSignReqVO reqVO);
    
    RspResult updateApprovalCourse(KccsCourseReqVO vo);
    
    List<KccsCourseStudentSignView> selectSignListForParent(KccsCourseQueryVO vo);
    
    boolean isFullForCourseId(BaseQueryVO vo);
    
    List<KccsCourseStudentSignView> selectSignListForTeachingByCourseId(KccsCourseQueryVO vo);
    
    List<KccsCourseView> selectSignCourseList(BaseQueryVO vo);
    
    boolean isCourseSignLimit(KccsCourseQueryVO vo);
    
    //查询待审核的课程
    List<KccsCourseInfo> selectPendingList(Page<KccsCourseInfo> page);
    //查询已审核的课程
    List<KccsCourseInfo> selectApprovedList(Page<KccsCourseInfo> page);
    //查询申请的课程列表
    List<KccsCourseInfo> selectApplyList(Integer teacherId);
    //查询任课的课程列表
    List<KccsCourseInfo> selectListForTeaching(Integer teacherId);
    //查看可报名的课程详情
    KccsCourseView selectSignCourseDetail(BaseQueryVO vo);
    //修改课程类型
    int updateCourseType(List<KccsCourseInfo> list);
    List<KccsCourseInfo> selectListByPage(Page<KccsCourseInfo> page);
    List<KccsCourseStudentSignTotal> selectStudentSignListByPage(Page<KccsCourseStudentSignTotal> page);
    
    CourseClassDate selectCourseClassDate();
    int updateCourseClassDate(CourseClassDate record);
    List<KccsCourseStudentSignTotal> selectCourseClazzTotal(KccsCourseQueryVO vo);
}
